1 module directx.d3d10;
2 /*-------------------------------------------------------------------------------------
3  *
4  * Copyright (c) Microsoft Corporation
5  *
6  *-------------------------------------------------------------------------------------*/
7 
8 version(Windows):
9 version(Direct3D_10):
10 
11 public import directx.dxgi;
12 public import directx.d3dcommon;
13 public import directx.d3d10sdklayers;
14 public import directx.d3d10misc;
15 public import directx.d3d10shader;
16 public import directx.d3d10effect;
17 
18 enum D3D10_16BIT_INDEX_STRIP_CUT_VALUE      = ( 0xffff );
19 enum D3D10_32BIT_INDEX_STRIP_CUT_VALUE      = ( 0xffffffff );
20 enum D3D10_8BIT_INDEX_STRIP_CUT_VALUE       = ( 0xff );
21 enum D3D10_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT       = ( 9 );
22 enum D3D10_CLIP_OR_CULL_DISTANCE_COUNT      = ( 8 );
23 enum D3D10_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT      = ( 2 );
24 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT      = ( 14 );
25 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS  = ( 4 );
26 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = ( 32 );
27 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT       = ( 15 );
28 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = ( 4 );
29 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT      = ( 15 );
30 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST     = ( 1 );
31 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = ( 1 );
32 enum D3D10_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT   = ( 64 );
33 enum D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS       = ( 4 );
34 enum D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT    = ( 1 );
35 enum D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST   = ( 1 );
36 enum D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS       = ( 1 );
37 enum D3D10_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = ( 32 );
38 enum D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS  = ( 1 );
39 enum D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT       = ( 128 );
40 enum D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST      = ( 1 );
41 enum D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS  = ( 1 );
42 enum D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT   = ( 128 );
43 enum D3D10_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = ( 1 );
44 enum D3D10_COMMONSHADER_SAMPLER_REGISTER_COUNT      = ( 16 );
45 enum D3D10_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST     = ( 1 );
46 enum D3D10_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = ( 1 );
47 enum D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT  = ( 16 );
48 enum D3D10_COMMONSHADER_SUBROUTINE_NESTING_LIMIT    = ( 32 );
49 enum D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENTS    = ( 4 );
50 enum D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT   = ( 32 );
51 enum D3D10_COMMONSHADER_TEMP_REGISTER_COUNT = ( 4096 );
52 enum D3D10_COMMONSHADER_TEMP_REGISTER_READS_PER_INST= ( 3 );
53 enum D3D10_COMMONSHADER_TEMP_REGISTER_READ_PORTS    = ( 3 );
54 enum D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX= ( 10 );
55 enum D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN= ( -10 );
56 enum D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE   = ( -8 );
57 enum D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE   = ( 7 );
58 enum D3D10_DEFAULT_BLEND_FACTOR_ALPHA       = ( 1.0f );
59 enum D3D10_DEFAULT_BLEND_FACTOR_BLUE= ( 1.0f );
60 enum D3D10_DEFAULT_BLEND_FACTOR_GREEN       = ( 1.0f );
61 enum D3D10_DEFAULT_BLEND_FACTOR_RED = ( 1.0f );
62 enum D3D10_DEFAULT_BORDER_COLOR_COMPONENT   = ( 0.0f );
63 enum D3D10_DEFAULT_DEPTH_BIAS       = ( 0 );
64 enum D3D10_DEFAULT_DEPTH_BIAS_CLAMP = ( 0.0f );
65 enum D3D10_DEFAULT_MAX_ANISOTROPY   = ( 16.0f );
66 enum D3D10_DEFAULT_MIP_LOD_BIAS     = ( 0.0f );
67 enum D3D10_DEFAULT_RENDER_TARGET_ARRAY_INDEX= ( 0 );
68 enum D3D10_DEFAULT_SAMPLE_MASK      = ( 0xffffffff );
69 enum D3D10_DEFAULT_SCISSOR_ENDX     = ( 0 );
70 enum D3D10_DEFAULT_SCISSOR_ENDY     = ( 0 );
71 enum D3D10_DEFAULT_SCISSOR_STARTX   = ( 0 );
72 enum D3D10_DEFAULT_SCISSOR_STARTY   = ( 0 );
73 enum D3D10_DEFAULT_SLOPE_SCALED_DEPTH_BIAS  = ( 0.0f );
74 enum D3D10_DEFAULT_STENCIL_READ_MASK= ( 0xff );
75 enum D3D10_DEFAULT_STENCIL_REFERENCE= ( 0 );
76 enum D3D10_DEFAULT_STENCIL_WRITE_MASK       = ( 0xff );
77 enum D3D10_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX   = ( 0 );
78 enum D3D10_DEFAULT_VIEWPORT_HEIGHT  = ( 0 );
79 enum D3D10_DEFAULT_VIEWPORT_MAX_DEPTH       = ( 0.0f );
80 enum D3D10_DEFAULT_VIEWPORT_MIN_DEPTH       = ( 0.0f );
81 enum D3D10_DEFAULT_VIEWPORT_TOPLEFTX= ( 0 );
82 enum D3D10_DEFAULT_VIEWPORT_TOPLEFTY= ( 0 );
83 enum D3D10_DEFAULT_VIEWPORT_WIDTH   = ( 0 );
84 enum D3D10_FLOAT16_FUSED_TOLERANCE_IN_ULP   = ( 0.6 );
85 enum D3D10_FLOAT32_MAX      = ( 3.402823466e+38f );
86 enum D3D10_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP      = ( 0.6f );
87 enum D3D10_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR       = ( 2.4f );
88 enum D3D10_FLOAT_TO_SRGB_EXPONENT_NUMERATOR = ( 1.0f );
89 enum D3D10_FLOAT_TO_SRGB_OFFSET     = ( 0.055f );
90 enum D3D10_FLOAT_TO_SRGB_SCALE_1    = ( 12.92f );
91 enum D3D10_FLOAT_TO_SRGB_SCALE_2    = ( 1.055f );
92 enum D3D10_FLOAT_TO_SRGB_THRESHOLD  = ( 0.0031308f );
93 enum D3D10_FTOI_INSTRUCTION_MAX_INPUT       = ( 2147483647.999f );
94 enum D3D10_FTOI_INSTRUCTION_MIN_INPUT       = ( -2147483648.999f );
95 enum D3D10_FTOU_INSTRUCTION_MAX_INPUT       = ( 4294967295.999f );
96 enum D3D10_FTOU_INSTRUCTION_MIN_INPUT       = ( 0.0f );
97 enum D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS  = ( 1 );
98 enum D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
99 enum D3D10_GS_INPUT_PRIM_CONST_REGISTER_COUNT       = ( 1 );
100 enum D3D10_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST      = ( 2 );
101 enum D3D10_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS  = ( 1 );
102 enum D3D10_GS_INPUT_REGISTER_COMPONENTS     = ( 4 );
103 enum D3D10_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT    = ( 32 );
104 enum D3D10_GS_INPUT_REGISTER_COUNT  = ( 16 );
105 enum D3D10_GS_INPUT_REGISTER_READS_PER_INST = ( 2 );
106 enum D3D10_GS_INPUT_REGISTER_READ_PORTS     = ( 1 );
107 enum D3D10_GS_INPUT_REGISTER_VERTICES       = ( 6 );
108 enum D3D10_GS_OUTPUT_ELEMENTS       = ( 32 );
109 enum D3D10_GS_OUTPUT_REGISTER_COMPONENTS    = ( 4 );
110 enum D3D10_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT   = ( 32 );
111 enum D3D10_GS_OUTPUT_REGISTER_COUNT = ( 32 );
112 enum D3D10_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES  = ( 0 );
113 enum D3D10_IA_DEFAULT_PRIMITIVE_TOPOLOGY    = ( 0 );
114 enum D3D10_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = ( 0 );
115 enum D3D10_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT       = ( 1 );
116 enum D3D10_IA_INSTANCE_ID_BIT_COUNT = ( 32 );
117 enum D3D10_IA_INTEGER_ARITHMETIC_BIT_COUNT  = ( 32 );
118 enum D3D10_IA_PRIMITIVE_ID_BIT_COUNT= ( 32 );
119 enum D3D10_IA_VERTEX_ID_BIT_COUNT   = ( 32 );
120 enum D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT      = ( 16 );
121 enum D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS    = ( 64 );
122 enum D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT  = ( 16 );
123 enum D3D10_INTEGER_DIVIDE_BY_ZERO_QUOTIENT  = ( 0xffffffff );
124 enum D3D10_INTEGER_DIVIDE_BY_ZERO_REMAINDER = ( 0xffffffff );
125 enum D3D10_LINEAR_GAMMA     = ( 1.0f );
126 enum D3D10_MAX_BORDER_COLOR_COMPONENT       = ( 1.0f );
127 enum D3D10_MAX_DEPTH= ( 1.0f );
128 enum D3D10_MAX_MAXANISOTROPY= ( 16 );
129 enum D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT     = ( 32 );
130 enum D3D10_MAX_POSITION_VALUE       = ( 3.402823466e+34f );
131 enum D3D10_MAX_TEXTURE_DIMENSION_2_TO_EXP   = ( 17 );
132 enum D3D10_MIN_BORDER_COLOR_COMPONENT       = ( 0.0f );
133 enum D3D10_MIN_DEPTH= ( 0.0f );
134 enum D3D10_MIN_MAXANISOTROPY= ( 0 );
135 enum D3D10_MIP_LOD_BIAS_MAX = ( 15.99f );
136 enum D3D10_MIP_LOD_BIAS_MIN = ( -16.0f );
137 enum D3D10_MIP_LOD_FRACTIONAL_BIT_COUNT     = ( 6 );
138 enum D3D10_MIP_LOD_RANGE_BIT_COUNT  = ( 8 );
139 enum D3D10_MULTISAMPLE_ANTIALIAS_LINE_WIDTH = ( 1.4f );
140 enum D3D10_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT       = ( 0 );
141 enum D3D10_PIXEL_ADDRESS_RANGE_BIT_COUNT    = ( 13 );
142 enum D3D10_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT= ( 15 );
143 enum D3D10_PS_FRONTFACING_DEFAULT_VALUE     = ( 0xffffffff );
144 enum D3D10_PS_FRONTFACING_FALSE_VALUE       = ( 0 );
145 enum D3D10_PS_FRONTFACING_TRUE_VALUE= ( 0xffffffff );
146 enum D3D10_PS_INPUT_REGISTER_COMPONENTS     = ( 4 );
147 enum D3D10_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT    = ( 32 );
148 enum D3D10_PS_INPUT_REGISTER_COUNT  = ( 32 );
149 enum D3D10_PS_INPUT_REGISTER_READS_PER_INST = ( 2 );
150 enum D3D10_PS_INPUT_REGISTER_READ_PORTS     = ( 1 );
151 enum D3D10_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT      = ( 0.0f );
152 enum D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS      = ( 1 );
153 enum D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT     = ( 32 );
154 enum D3D10_PS_OUTPUT_DEPTH_REGISTER_COUNT   = ( 1 );
155 enum D3D10_PS_OUTPUT_REGISTER_COMPONENTS    = ( 4 );
156 enum D3D10_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT   = ( 32 );
157 enum D3D10_PS_OUTPUT_REGISTER_COUNT = ( 8 );
158 enum D3D10_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT     = ( 0.5f );
159 enum D3D10_REQ_BLEND_OBJECT_COUNT_PER_CONTEXT       = ( 4096 );
160 enum D3D10_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = ( 27 );
161 enum D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT= ( 4096 );
162 enum D3D10_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_CONTEXT       = ( 4096 );
163 enum D3D10_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP     = ( 32 );
164 enum D3D10_REQ_DRAW_VERTEX_COUNT_2_TO_EXP   = ( 32 );
165 enum D3D10_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION  = ( 8192 );
166 enum D3D10_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT   = ( 1024 );
167 enum D3D10_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT      = ( 4096 );
168 enum D3D10_REQ_MAXANISOTROPY= ( 16 );
169 enum D3D10_REQ_MIP_LEVELS   = ( 14 );
170 enum D3D10_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES= ( 2048 );
171 enum D3D10_REQ_RASTERIZER_OBJECT_COUNT_PER_CONTEXT  = ( 4096 );
172 enum D3D10_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH= ( 8192 );
173 enum D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES   = ( 128 );
174 enum D3D10_REQ_RESOURCE_VIEW_COUNT_PER_CONTEXT_2_TO_EXP     = ( 20 );
175 enum D3D10_REQ_SAMPLER_OBJECT_COUNT_PER_CONTEXT     = ( 4096 );
176 enum D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION       = ( 512 );
177 enum D3D10_REQ_TEXTURE1D_U_DIMENSION= ( 8192 );
178 enum D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION       = ( 512 );
179 enum D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION   = ( 8192 );
180 enum D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = ( 2048 );
181 enum D3D10_REQ_TEXTURECUBE_DIMENSION= ( 8192 );
182 enum D3D10_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL     = ( 0 );
183 enum D3D10_SHADER_MAJOR_VERSION     = ( 4 );
184 enum D3D10_SHADER_MINOR_VERSION     = ( 0 );
185 enum D3D10_SHIFT_INSTRUCTION_PAD_VALUE      = ( 0 );
186 enum D3D10_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT  = ( 5 );
187 enum D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT = ( 8 );
188 enum D3D10_SO_BUFFER_MAX_STRIDE_IN_BYTES    = ( 2048 );
189 enum D3D10_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES      = ( 256 );
190 enum D3D10_SO_BUFFER_SLOT_COUNT     = ( 4 );
191 enum D3D10_SO_DDI_REGISTER_INDEX_DENOTING_GAP       = ( 0xffffffff );
192 enum D3D10_SO_MULTIPLE_BUFFER_ELEMENTS_PER_BUFFER   = ( 1 );
193 enum D3D10_SO_SINGLE_BUFFER_COMPONENT_LIMIT = ( 64 );
194 enum D3D10_SRGB_GAMMA       = ( 2.2f );
195 enum D3D10_SRGB_TO_FLOAT_DENOMINATOR_1      = ( 12.92f );
196 enum D3D10_SRGB_TO_FLOAT_DENOMINATOR_2      = ( 1.055f );
197 enum D3D10_SRGB_TO_FLOAT_EXPONENT   = ( 2.4f );
198 enum D3D10_SRGB_TO_FLOAT_OFFSET     = ( 0.055f );
199 enum D3D10_SRGB_TO_FLOAT_THRESHOLD  = ( 0.04045f );
200 enum D3D10_SRGB_TO_FLOAT_TOLERANCE_IN_ULP   = ( 0.5f );
201 enum D3D10_STANDARD_COMPONENT_BIT_COUNT     = ( 32 );
202 enum D3D10_STANDARD_COMPONENT_BIT_COUNT_DOUBLED     = ( 64 );
203 enum D3D10_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = ( 4 );
204 enum D3D10_STANDARD_PIXEL_COMPONENT_COUNT   = ( 128 );
205 enum D3D10_STANDARD_PIXEL_ELEMENT_COUNT     = ( 32 );
206 enum D3D10_STANDARD_VECTOR_SIZE     = ( 4 );
207 enum D3D10_STANDARD_VERTEX_ELEMENT_COUNT    = ( 16 );
208 enum D3D10_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT    = ( 64 );
209 enum D3D10_SUBPIXEL_FRACTIONAL_BIT_COUNT    = ( 8 );
210 enum D3D10_SUBTEXEL_FRACTIONAL_BIT_COUNT    = ( 6 );
211 enum D3D10_TEXEL_ADDRESS_RANGE_BIT_COUNT    = ( 18 );
212 enum D3D10_UNBOUND_MEMORY_ACCESS_RESULT     = ( 0 );
213 enum D3D10_VIEWPORT_AND_SCISSORRECT_MAX_INDEX       = ( 15 );
214 enum D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE       = ( 16 );
215 enum D3D10_VIEWPORT_BOUNDS_MAX      = ( 16383 );
216 enum D3D10_VIEWPORT_BOUNDS_MIN      = ( -16384 );
217 enum D3D10_VS_INPUT_REGISTER_COMPONENTS     = ( 4 );
218 enum D3D10_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT    = ( 32 );
219 enum D3D10_VS_INPUT_REGISTER_COUNT  = ( 16 );
220 enum D3D10_VS_INPUT_REGISTER_READS_PER_INST = ( 2 );
221 enum D3D10_VS_INPUT_REGISTER_READ_PORTS     = ( 1 );
222 enum D3D10_VS_OUTPUT_REGISTER_COMPONENTS    = ( 4 );
223 enum D3D10_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT   = ( 32 );
224 enum D3D10_VS_OUTPUT_REGISTER_COUNT = ( 16 );
225 enum D3D10_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT    = ( 10 );
226 enum D3D10_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP    = ( 25 );
227 enum D3D10_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP  = ( 25 );
228 enum D3D_MAJOR_VERSION      = ( 10 );
229 enum D3D_MINOR_VERSION      = ( 0 );
230 enum D3D_SPEC_DATE_DAY      = ( 8 );
231 enum D3D_SPEC_DATE_MONTH    = ( 8 );
232 enum D3D_SPEC_DATE_YEAR     = ( 2006 );
233 enum D3D_SPEC_VERSION       = ( 1.050005 );
234 
235 alias D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT D3D10_1_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT;
236 alias D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT D3D10_1_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT;
237 
238 enum _FACD3D10      = 0x879;
239 enum _FACD3D10DEBUG = _FACD3D10 + 1;
240 
241 pure nothrow @safe @nogc {
242     HRESULT MAKE_D3D10_HRESULT(UINT code) {
243         return MAKE_HRESULT(1, _FACD3D10, code);
244     }
245 
246     HRESULT MAKE_D3D10_STATUS(UINT code) {
247         return MAKE_HRESULT(0, _FACD3D10, code);
248     }
249 }
250 
251 /* Direct3D errors are now found in winerror.h */
252 
253 alias DWORD D3D10_INPUT_CLASSIFICATION;
254 enum : D3D10_INPUT_CLASSIFICATION
255 {
256     D3D10_INPUT_PER_VERTEX_DATA = 0,
257     D3D10_INPUT_PER_INSTANCE_DATA       = 1
258 }
259 
260 enum D3D10_APPEND_ALIGNED_ELEMENT  = ( 0xffffffff );
261 
262 struct D3D10_INPUT_ELEMENT_DESC
263 {
264     LPCSTR SemanticName;
265     UINT SemanticIndex;
266     DXGI_FORMAT Format;
267     UINT InputSlot;
268     UINT AlignedByteOffset;
269     D3D10_INPUT_CLASSIFICATION InputSlotClass;
270     UINT InstanceDataStepRate;
271 }
272 
273 alias DWORD D3D10_FILL_MODE;
274 enum : D3D10_FILL_MODE
275 {
276     D3D10_FILL_WIREFRAME        = 2,
277     D3D10_FILL_SOLID        = 3
278 }
279 
280 alias D3D_PRIMITIVE_TOPOLOGY D3D10_PRIMITIVE_TOPOLOGY;
281 alias D3D_PRIMITIVE D3D10_PRIMITIVE;
282 
283 alias DWORD D3D10_CULL_MODE;
284 enum : D3D10_CULL_MODE
285 {
286     D3D10_CULL_NONE     = 1,
287     D3D10_CULL_FRONT        = 2,
288     D3D10_CULL_BACK = 3
289 }
290 
291 struct D3D10_SO_DECLARATION_ENTRY
292 {
293     LPCSTR SemanticName;
294     UINT SemanticIndex;
295     BYTE StartComponent;
296     BYTE ComponentCount;
297     BYTE OutputSlot;
298 }
299 
300 struct D3D10_VIEWPORT
301 {
302     INT TopLeftX;
303     INT TopLeftY;
304     UINT Width;
305     UINT Height;
306     FLOAT MinDepth;
307     FLOAT MaxDepth;
308 }
309 
310 alias DWORD D3D10_RESOURCE_DIMENSION;
311 enum : D3D10_RESOURCE_DIMENSION
312 {
313     D3D10_RESOURCE_DIMENSION_UNKNOWN    = 0,
314     D3D10_RESOURCE_DIMENSION_BUFFER = 1,
315     D3D10_RESOURCE_DIMENSION_TEXTURE1D      = 2,
316     D3D10_RESOURCE_DIMENSION_TEXTURE2D      = 3,
317     D3D10_RESOURCE_DIMENSION_TEXTURE3D      = 4
318 }
319 
320 alias D3D_SRV_DIMENSION D3D10_SRV_DIMENSION;
321 
322 alias DWORD D3D10_DSV_DIMENSION;
323 enum : D3D10_DSV_DIMENSION
324 {
325     D3D10_DSV_DIMENSION_UNKNOWN = 0,
326     D3D10_DSV_DIMENSION_TEXTURE1D   = 1,
327     D3D10_DSV_DIMENSION_TEXTURE1DARRAY      = 2,
328     D3D10_DSV_DIMENSION_TEXTURE2D   = 3,
329     D3D10_DSV_DIMENSION_TEXTURE2DARRAY      = 4,
330     D3D10_DSV_DIMENSION_TEXTURE2DMS = 5,
331     D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY    = 6
332 }
333 
334 alias DWORD D3D10_RTV_DIMENSION;
335 enum : D3D10_RTV_DIMENSION
336 {
337     D3D10_RTV_DIMENSION_UNKNOWN = 0,
338     D3D10_RTV_DIMENSION_BUFFER      = 1,
339     D3D10_RTV_DIMENSION_TEXTURE1D   = 2,
340     D3D10_RTV_DIMENSION_TEXTURE1DARRAY      = 3,
341     D3D10_RTV_DIMENSION_TEXTURE2D   = 4,
342     D3D10_RTV_DIMENSION_TEXTURE2DARRAY      = 5,
343     D3D10_RTV_DIMENSION_TEXTURE2DMS = 6,
344     D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY    = 7,
345     D3D10_RTV_DIMENSION_TEXTURE3D   = 8
346 }
347 
348 alias DWORD D3D10_USAGE;
349 enum : D3D10_USAGE
350 {
351     D3D10_USAGE_DEFAULT = 0,
352     D3D10_USAGE_IMMUTABLE   = 1,
353     D3D10_USAGE_DYNAMIC     = 2,
354     D3D10_USAGE_STAGING     = 3
355 }
356 
357 alias DWORD D3D10_BIND_FLAG;
358 enum : D3D10_BIND_FLAG
359 {
360     D3D10_BIND_VERTEX_BUFFER    = 0x1L,
361     D3D10_BIND_INDEX_BUFFER = 0x2L,
362     D3D10_BIND_CONSTANT_BUFFER      = 0x4L,
363     D3D10_BIND_SHADER_RESOURCE      = 0x8L,
364     D3D10_BIND_STREAM_OUTPUT        = 0x10L,
365     D3D10_BIND_RENDER_TARGET        = 0x20L,
366     D3D10_BIND_DEPTH_STENCIL        = 0x40L
367 }
368 
369 alias DWORD D3D10_CPU_ACCESS_FLAG;
370 enum : D3D10_CPU_ACCESS_FLAG
371 {
372     D3D10_CPU_ACCESS_WRITE      = 0x10000L,
373     D3D10_CPU_ACCESS_READ   = 0x20000L
374 }
375 
376 alias DWORD D3D10_RESOURCE_MISC_FLAG;
377 enum : D3D10_RESOURCE_MISC_FLAG
378 {
379     D3D10_RESOURCE_MISC_GENERATE_MIPS   = 0x1L,
380     D3D10_RESOURCE_MISC_SHARED      = 0x2L,
381     D3D10_RESOURCE_MISC_TEXTURECUBE = 0x4L,
382     D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX   = 0x10L,
383     D3D10_RESOURCE_MISC_GDI_COMPATIBLE      = 0x20L
384 }
385 
386 alias DWORD D3D10_MAP;
387 enum : D3D10_MAP
388 {
389     D3D10_MAP_READ      = 1,
390     D3D10_MAP_WRITE = 2,
391     D3D10_MAP_READ_WRITE    = 3,
392     D3D10_MAP_WRITE_DISCARD = 4,
393     D3D10_MAP_WRITE_NO_OVERWRITE    = 5
394 }
395 
396 alias DWORD D3D10_MAP_FLAG;
397 enum : D3D10_MAP_FLAG
398 {
399     D3D10_MAP_FLAG_DO_NOT_WAIT  = 0x100000L
400 }
401 
402 alias DWORD D3D10_RAISE_FLAG;
403 enum : D3D10_RAISE_FLAG
404 {
405     D3D10_RAISE_FLAG_DRIVER_INTERNAL_ERROR      = 0x1L
406 }
407 
408 alias DWORD D3D10_CLEAR_FLAG;
409 enum : D3D10_CLEAR_FLAG
410 {
411     D3D10_CLEAR_DEPTH   = 0x1L,
412     D3D10_CLEAR_STENCIL     = 0x2L
413 }
414 
415 alias RECT D3D10_RECT;
416 
417 struct D3D10_BOX
418 {
419     UINT left;
420     UINT top;
421     UINT front;
422     UINT right;
423     UINT bottom;
424     UINT back;
425 }
426 
427 mixin(uuid!(ID3D10DeviceChild, "9B7E4C00-342C-4106-A19F-4F2704F689F0"));
428 extern (C++) interface ID3D10DeviceChild : IUnknown {
429     void GetDevice(ID3D10Device* ppDevice);
430     HRESULT GetPrivateData(
431         REFGUID guid,
432         UINT* pDataSize,
433         void* pData);
434 
435     HRESULT SetPrivateData(
436         REFGUID guid,
437         UINT DataSize,
438         const(void)* pData);
439 
440     HRESULT SetPrivateDataInterface(
441         REFGUID guid,
442         const IUnknown pData);
443 }
444 
445 enum D3D10_COMPARISON_FUNC
446 {
447     D3D10_COMPARISON_NEVER      = 1,
448     D3D10_COMPARISON_LESS       = 2,
449     D3D10_COMPARISON_EQUAL      = 3,
450     D3D10_COMPARISON_LESS_EQUAL = 4,
451     D3D10_COMPARISON_GREATER    = 5,
452     D3D10_COMPARISON_NOT_EQUAL  = 6,
453     D3D10_COMPARISON_GREATER_EQUAL      = 7,
454     D3D10_COMPARISON_ALWAYS     = 8
455 }
456 
457 alias DWORD D3D10_DEPTH_WRITE_MASK;
458 enum : D3D10_DEPTH_WRITE_MASK
459 {
460     D3D10_DEPTH_WRITE_MASK_ZERO = 0,
461     D3D10_DEPTH_WRITE_MASK_ALL      = 1
462 }
463 
464 alias DWORD D3D10_STENCIL_OP;
465 enum : D3D10_STENCIL_OP
466 {
467     D3D10_STENCIL_OP_KEEP       = 1,
468     D3D10_STENCIL_OP_ZERO   = 2,
469     D3D10_STENCIL_OP_REPLACE        = 3,
470     D3D10_STENCIL_OP_INCR_SAT       = 4,
471     D3D10_STENCIL_OP_DECR_SAT       = 5,
472     D3D10_STENCIL_OP_INVERT = 6,
473     D3D10_STENCIL_OP_INCR   = 7,
474     D3D10_STENCIL_OP_DECR   = 8
475 }
476 
477 struct D3D10_DEPTH_STENCILOP_DESC
478 {
479     D3D10_STENCIL_OP StencilFailOp;
480     D3D10_STENCIL_OP StencilDepthFailOp;
481     D3D10_STENCIL_OP StencilPassOp;
482     D3D10_COMPARISON_FUNC StencilFunc;
483 }
484 
485 struct D3D10_DEPTH_STENCIL_DESC
486 {
487     BOOL DepthEnable;
488     D3D10_DEPTH_WRITE_MASK DepthWriteMask;
489     D3D10_COMPARISON_FUNC DepthFunc;
490     BOOL StencilEnable;
491     UINT8 StencilReadMask;
492     UINT8 StencilWriteMask;
493     D3D10_DEPTH_STENCILOP_DESC FrontFace;
494     D3D10_DEPTH_STENCILOP_DESC BackFace;
495 }
496 
497 mixin(uuid!(ID3D10DepthStencilState, "2B4B1CC8-A4AD-41f8-8322-CA86FC3EC675"));
498 extern (C++) interface ID3D10DepthStencilState : ID3D10DeviceChild {
499     void GetDesc(D3D10_DEPTH_STENCIL_DESC* pDesc);
500 
501 }
502 
503 alias DWORD D3D10_BLEND;
504 enum : D3D10_BLEND
505 {
506     D3D10_BLEND_ZERO    = 1,
507     D3D10_BLEND_ONE     = 2,
508     D3D10_BLEND_SRC_COLOR       = 3,
509     D3D10_BLEND_INV_SRC_COLOR   = 4,
510     D3D10_BLEND_SRC_ALPHA       = 5,
511     D3D10_BLEND_INV_SRC_ALPHA   = 6,
512     D3D10_BLEND_DEST_ALPHA      = 7,
513     D3D10_BLEND_INV_DEST_ALPHA  = 8,
514     D3D10_BLEND_DEST_COLOR      = 9,
515     D3D10_BLEND_INV_DEST_COLOR  = 10,
516     D3D10_BLEND_SRC_ALPHA_SAT   = 11,
517     D3D10_BLEND_BLEND_FACTOR    = 14,
518     D3D10_BLEND_INV_BLEND_FACTOR        = 15,
519     D3D10_BLEND_SRC1_COLOR      = 16,
520     D3D10_BLEND_INV_SRC1_COLOR  = 17,
521     D3D10_BLEND_SRC1_ALPHA      = 18,
522     D3D10_BLEND_INV_SRC1_ALPHA  = 19
523 }
524 
525 alias DWORD D3D10_BLEND_OP;
526 enum : D3D10_BLEND_OP
527 {
528     D3D10_BLEND_OP_ADD  = 1,
529     D3D10_BLEND_OP_SUBTRACT = 2,
530     D3D10_BLEND_OP_REV_SUBTRACT     = 3,
531     D3D10_BLEND_OP_MIN      = 4,
532     D3D10_BLEND_OP_MAX      = 5
533 }
534 
535 alias DWORD D3D10_COLOR_WRITE_ENABLE;
536 enum : D3D10_COLOR_WRITE_ENABLE
537 {
538     D3D10_COLOR_WRITE_ENABLE_RED        = 1,
539     D3D10_COLOR_WRITE_ENABLE_GREEN  = 2,
540     D3D10_COLOR_WRITE_ENABLE_BLUE   = 4,
541     D3D10_COLOR_WRITE_ENABLE_ALPHA  = 8,
542     D3D10_COLOR_WRITE_ENABLE_ALL    = ( ( ( D3D10_COLOR_WRITE_ENABLE_RED | D3D10_COLOR_WRITE_ENABLE_GREEN )  | D3D10_COLOR_WRITE_ENABLE_BLUE )  | D3D10_COLOR_WRITE_ENABLE_ALPHA )
543 }
544 
545 struct D3D10_BLEND_DESC
546 {
547     BOOL AlphaToCoverageEnable;
548     BOOL[8] BlendEnable;
549     D3D10_BLEND SrcBlend;
550     D3D10_BLEND DestBlend;
551     D3D10_BLEND_OP BlendOp;
552     D3D10_BLEND SrcBlendAlpha;
553     D3D10_BLEND DestBlendAlpha;
554     D3D10_BLEND_OP BlendOpAlpha;
555     UINT8[8] RenderTargetWriteMask;
556 }
557 
558 mixin(uuid!(ID3D10BlendState, "EDAD8D19-8A35-4d6d-8566-2EA276CDE161"));
559 extern (C++) interface ID3D10BlendState : ID3D10DeviceChild {
560     void GetDesc(D3D10_BLEND_DESC* pDesc);
561 
562 }
563 
564 struct D3D10_RASTERIZER_DESC
565 {
566     D3D10_FILL_MODE FillMode;
567     D3D10_CULL_MODE CullMode;
568     BOOL FrontCounterClockwise;
569     INT DepthBias;
570     FLOAT DepthBiasClamp;
571     FLOAT SlopeScaledDepthBias;
572     BOOL DepthClipEnable;
573     BOOL ScissorEnable;
574     BOOL MultisampleEnable;
575     BOOL AntialiasedLineEnable;
576 }
577 
578 mixin(uuid!(ID3D10RasterizerState, "A2A07292-89AF-4345-BE2E-C53D9FBB6E9F"));
579 extern (C++) interface ID3D10RasterizerState : ID3D10DeviceChild {
580     void GetDesc(D3D10_RASTERIZER_DESC *pDesc);
581 
582 }
583 
584 pure nothrow @safe @nogc
585 UINT D3D10CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT MipLevels) {
586     return MipSlice + ArraySlice * MipLevels;
587 }
588 
589 struct D3D10_SUBRESOURCE_DATA
590 {
591     const(void)* pSysMem;
592     UINT SysMemPitch;
593     UINT SysMemSlicePitch;
594 }
595 
596 mixin(uuid!(ID3D10Resource, "9B7E4C01-342C-4106-A19F-4F2704F689F0"));
597 extern (C++) interface ID3D10Resource : ID3D10DeviceChild {
598     void GetType(D3D10_RESOURCE_DIMENSION* rType);
599     void SetEvictionPriority(UINT EvictionPriority);
600     UINT GetEvictionPriority();
601 }
602 
603 struct D3D10_BUFFER_DESC
604 {
605     UINT ByteWidth;
606     D3D10_USAGE Usage;
607     UINT BindFlags;
608     UINT CPUAccessFlags;
609     UINT MiscFlags;
610 }
611 
612 mixin(uuid!(ID3D10Buffer, "9B7E4C02-342C-4106-A19F-4F2704F689F0"));
613 extern (C++) interface ID3D10Buffer : ID3D10Resource {
614     HRESULT Map(
615         D3D10_MAP MapType,
616         UINT MapFlags,
617         void** ppData);
618     void Unmap();
619     void GetDesc(D3D10_BUFFER_DESC* pDesc);
620 
621 }
622 
623 struct D3D10_TEXTURE1D_DESC
624 {
625     UINT Width;
626     UINT MipLevels;
627     UINT ArraySize;
628     DXGI_FORMAT Format;
629     D3D10_USAGE Usage;
630     UINT BindFlags;
631     UINT CPUAccessFlags;
632     UINT MiscFlags;
633 }
634 
635 mixin(uuid!(ID3D10Texture1D, "9B7E4C03-342C-4106-A19F-4F2704F689F0"));
636 extern (C++) interface ID3D10Texture1D : ID3D10Resource {
637     HRESULT Map(
638         UINT Subresource,
639         D3D10_MAP MapType,
640         UINT MapFlags,
641         void** ppData);
642 
643     void Unmap(UINT Subresource);
644 
645     void GetDesc(D3D10_TEXTURE1D_DESC* pDesc);
646 }
647 
648 struct D3D10_TEXTURE2D_DESC
649 {
650     UINT Width;
651     UINT Height;
652     UINT MipLevels;
653     UINT ArraySize;
654     DXGI_FORMAT Format;
655     DXGI_SAMPLE_DESC SampleDesc;
656     D3D10_USAGE Usage;
657     UINT BindFlags;
658     UINT CPUAccessFlags;
659     UINT MiscFlags;
660 }
661 
662 struct D3D10_MAPPED_TEXTURE2D
663 {
664     void* pData;
665     UINT RowPitch;
666 }
667 
668 mixin(uuid!(ID3D10Texture2D, "9B7E4C04-342C-4106-A19F-4F2704F689F0"));
669 extern (C++) interface ID3D10Texture2D : ID3D10Resource {
670     HRESULT Map(
671         UINT Subresource,
672         D3D10_MAP MapType,
673         UINT MapFlags,
674         D3D10_MAPPED_TEXTURE2D* pMappedTex2D);
675 
676     void Unmap(UINT Subresource);
677 
678     void GetDesc(D3D10_TEXTURE2D_DESC* pDesc);
679 }
680 
681 struct D3D10_TEXTURE3D_DESC
682 {
683     UINT Width;
684     UINT Height;
685     UINT Depth;
686     UINT MipLevels;
687     DXGI_FORMAT Format;
688     D3D10_USAGE Usage;
689     UINT BindFlags;
690     UINT CPUAccessFlags;
691     UINT MiscFlags;
692 }
693 
694 struct D3D10_MAPPED_TEXTURE3D
695 {
696     void* pData;
697     UINT RowPitch;
698     UINT DepthPitch;
699 }
700 
701 mixin(uuid!(ID3D10Texture3D, "9B7E4C05-342C-4106-A19F-4F2704F689F0"));
702 extern (C++) interface ID3D10Texture3D : ID3D10Resource {
703     HRESULT Map(
704         UINT Subresource,
705         D3D10_MAP MapType,
706         UINT MapFlags,
707         D3D10_MAPPED_TEXTURE3D* pMappedTex3D);
708 
709     void Unmap(UINT Subresource);
710 
711     void GetDesc(D3D10_TEXTURE3D_DESC* pDesc);
712 }
713 
714 enum D3D10_TEXTURECUBE_FACE
715 {
716     D3D10_TEXTURECUBE_FACE_POSITIVE_X   = 0,
717     D3D10_TEXTURECUBE_FACE_NEGATIVE_X   = 1,
718     D3D10_TEXTURECUBE_FACE_POSITIVE_Y   = 2,
719     D3D10_TEXTURECUBE_FACE_NEGATIVE_Y   = 3,
720     D3D10_TEXTURECUBE_FACE_POSITIVE_Z   = 4,
721     D3D10_TEXTURECUBE_FACE_NEGATIVE_Z   = 5
722 }
723 
724 mixin(uuid!(ID3D10View, "C902B03F-60A7-49BA-9936-2A3AB37A7E33"));
725 extern (C++) interface ID3D10View : ID3D10DeviceChild {
726     void GetResource(ID3D10Resource* ppResource);
727 }
728 
729 struct D3D10_BUFFER_SRV
730 {
731     union
732     {
733         UINT FirstElement;
734         UINT ElementOffset;
735     }
736     union
737     {
738         UINT NumElements;
739         UINT ElementWidth;
740     }
741 }
742 
743 struct D3D10_TEX1D_SRV
744 {
745     UINT MostDetailedMip;
746     UINT MipLevels;
747 }
748 
749 struct D3D10_TEX1D_ARRAY_SRV
750 {
751     UINT MostDetailedMip;
752     UINT MipLevels;
753     UINT FirstArraySlice;
754     UINT ArraySize;
755 }
756 
757 struct D3D10_TEX2D_SRV
758 {
759     UINT MostDetailedMip;
760     UINT MipLevels;
761 }
762 
763 struct D3D10_TEX2D_ARRAY_SRV
764 {
765     UINT MostDetailedMip;
766     UINT MipLevels;
767     UINT FirstArraySlice;
768     UINT ArraySize;
769 }
770 
771 struct D3D10_TEX3D_SRV
772 {
773     UINT MostDetailedMip;
774     UINT MipLevels;
775 }
776 
777 struct D3D10_TEXCUBE_SRV
778 {
779     UINT MostDetailedMip;
780     UINT MipLevels;
781 }
782 
783 struct D3D10_TEX2DMS_SRV
784 {
785     UINT UnusedField_NothingToDefine;
786 }
787 
788 struct D3D10_TEX2DMS_ARRAY_SRV
789 {
790     UINT FirstArraySlice;
791     UINT ArraySize;
792 }
793 
794 struct D3D10_SHADER_RESOURCE_VIEW_DESC
795 {
796     DXGI_FORMAT Format;
797     D3D10_SRV_DIMENSION ViewDimension;
798     union
799     {
800         D3D10_BUFFER_SRV Buffer;
801         D3D10_TEX1D_SRV Texture1D;
802         D3D10_TEX1D_ARRAY_SRV Texture1DArray;
803         D3D10_TEX2D_SRV Texture2D;
804         D3D10_TEX2D_ARRAY_SRV Texture2DArray;
805         D3D10_TEX2DMS_SRV Texture2DMS;
806         D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray;
807         D3D10_TEX3D_SRV Texture3D;
808         D3D10_TEXCUBE_SRV TextureCube;
809     }
810 }
811 
812 mixin(uuid!(ID3D10ShaderResourceView, "9B7E4C07-342C-4106-A19F-4F2704F689F0"));
813 extern (C++) interface ID3D10ShaderResourceView : ID3D10View {
814     void GetDesc(D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc);
815 }
816 
817 struct D3D10_BUFFER_RTV
818 {
819     union
820     {
821         UINT FirstElement;
822         UINT ElementOffset;
823     }
824     union
825     {
826         UINT NumElements;
827         UINT ElementWidth;
828     }
829 }
830 
831 struct D3D10_TEX1D_RTV
832 {
833     UINT MipSlice;
834 }
835 
836 struct D3D10_TEX1D_ARRAY_RTV
837 {
838     UINT MipSlice;
839     UINT FirstArraySlice;
840     UINT ArraySize;
841 }
842 
843 struct D3D10_TEX2D_RTV
844 {
845     UINT MipSlice;
846 }
847 
848 struct D3D10_TEX2DMS_RTV
849 {
850     UINT UnusedField_NothingToDefine;
851 }
852 
853 struct D3D10_TEX2D_ARRAY_RTV
854 {
855     UINT MipSlice;
856     UINT FirstArraySlice;
857     UINT ArraySize;
858 }
859 
860 struct D3D10_TEX2DMS_ARRAY_RTV
861 {
862     UINT FirstArraySlice;
863     UINT ArraySize;
864 }
865 
866 struct D3D10_TEX3D_RTV
867 {
868     UINT MipSlice;
869     UINT FirstWSlice;
870     UINT WSize;
871 }
872 
873 struct D3D10_RENDER_TARGET_VIEW_DESC
874 {
875     DXGI_FORMAT Format;
876     D3D10_RTV_DIMENSION ViewDimension;
877     union
878     {
879         D3D10_BUFFER_RTV Buffer;
880         D3D10_TEX1D_RTV Texture1D;
881         D3D10_TEX1D_ARRAY_RTV Texture1DArray;
882         D3D10_TEX2D_RTV Texture2D;
883         D3D10_TEX2D_ARRAY_RTV Texture2DArray;
884         D3D10_TEX2DMS_RTV Texture2DMS;
885         D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray;
886         D3D10_TEX3D_RTV Texture3D;
887     }
888 }
889 
890 mixin(uuid!(ID3D10RenderTargetView, "9B7E4C08-342C-4106-A19F-4F2704F689F0"));
891 extern (C++) interface ID3D10RenderTargetView : ID3D10View {
892     void GetDesc(D3D10_RENDER_TARGET_VIEW_DESC* pDesc);
893 
894 }
895 
896 struct D3D10_TEX1D_DSV
897 {
898     UINT MipSlice;
899 }
900 
901 struct D3D10_TEX1D_ARRAY_DSV
902 {
903     UINT MipSlice;
904     UINT FirstArraySlice;
905     UINT ArraySize;
906 }
907 
908 struct D3D10_TEX2D_DSV
909 {
910     UINT MipSlice;
911 }
912 
913 struct D3D10_TEX2D_ARRAY_DSV
914 {
915     UINT MipSlice;
916     UINT FirstArraySlice;
917     UINT ArraySize;
918 }
919 
920 struct D3D10_TEX2DMS_DSV
921 {
922     UINT UnusedField_NothingToDefine;
923 }
924 
925 struct D3D10_TEX2DMS_ARRAY_DSV
926 {
927     UINT FirstArraySlice;
928     UINT ArraySize;
929 }
930 
931 struct D3D10_DEPTH_STENCIL_VIEW_DESC
932 {
933     DXGI_FORMAT Format;
934     D3D10_DSV_DIMENSION ViewDimension;
935     union
936     {
937         D3D10_TEX1D_DSV Texture1D;
938         D3D10_TEX1D_ARRAY_DSV Texture1DArray;
939         D3D10_TEX2D_DSV Texture2D;
940         D3D10_TEX2D_ARRAY_DSV Texture2DArray;
941         D3D10_TEX2DMS_DSV Texture2DMS;
942         D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray;
943     }
944 }
945 
946 mixin(uuid!(ID3D10DepthStencilView, "9B7E4C09-342C-4106-A19F-4F2704F689F0"));
947 extern (C++) interface ID3D10DepthStencilView : ID3D10View {
948     void GetDesc(D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc);
949 
950 }
951 
952 mixin(uuid!(ID3D10VertexShader, "9B7E4C0A-342C-4106-A19F-4F2704F689F0"));
953 extern (C++) interface ID3D10VertexShader : ID3D10DeviceChild {}
954 
955 mixin(uuid!(ID3D10GeometryShader, "6316BE88-54CD-4040-AB44-20461BC81F68"));
956 extern (C++) interface ID3D10GeometryShader : ID3D10DeviceChild {}
957 
958 mixin(uuid!(ID3D10PixelShader, "4968B601-9D00-4cde-8346-8E7F675819B6"));
959 extern (C++) interface ID3D10PixelShader : ID3D10DeviceChild {}
960 
961 mixin(uuid!(ID3D10InputLayout, "9B7E4C0B-342C-4106-A19F-4F2704F689F0"));
962 extern (C++) interface ID3D10InputLayout : ID3D10DeviceChild {}
963 
964 alias DWORD D3D10_FILTER;
965 enum : D3D10_FILTER
966 {
967     D3D10_FILTER_MIN_MAG_MIP_POINT      = 0,
968     D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR       = 0x1,
969     D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
970     D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR       = 0x5,
971     D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT       = 0x10,
972     D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR        = 0x11,
973     D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT       = 0x14,
974     D3D10_FILTER_MIN_MAG_MIP_LINEAR     = 0x15,
975     D3D10_FILTER_ANISOTROPIC    = 0x55,
976     D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT   = 0x80,
977     D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR    = 0x81,
978     D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT      = 0x84,
979     D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR    = 0x85,
980     D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT    = 0x90,
981     D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR     = 0x91,
982     D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT    = 0x94,
983     D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR  = 0x95,
984     D3D10_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
985     D3D10_FILTER_TEXT_1BIT      = 0x80000000
986 }
987 
988 alias DWORD D3D10_FILTER_TYPE;
989 enum : D3D10_FILTER_TYPE
990 {
991     D3D10_FILTER_TYPE_POINT     = 0,
992     D3D10_FILTER_TYPE_LINEAR        = 1
993 }
994 
995 enum D3D10_FILTER_TYPE_MASK = ( 0x3 );
996 enum D3D10_MIN_FILTER_SHIFT = ( 4 );
997 enum D3D10_MAG_FILTER_SHIFT = ( 2 );
998 enum D3D10_MIP_FILTER_SHIFT = ( 0 );
999 enum D3D10_COMPARISON_FILTERING_BIT = ( 0x80 );
1000 enum D3D10_ANISOTROPIC_FILTERING_BIT= ( 0x40 );
1001 enum D3D10_TEXT_1BIT_BIT    = ( 0x80000000 );
1002 
1003 pure nothrow @safe @nogc {
1004     D3D10_FILTER D3D10_ENCODE_BASIC_FILTER(D3D10_FILTER_TYPE min, D3D10_FILTER_TYPE mag, D3D10_FILTER_TYPE mip, bool bComparison ) {
1005         return cast(D3D10_FILTER)
1006             ((bComparison ? D3D10_COMPARISON_FILTERING_BIT : 0 ) |
1007              ((min & D3D10_FILTER_TYPE_MASK) << D3D10_MIN_FILTER_SHIFT) |
1008              ((mag & D3D10_FILTER_TYPE_MASK) << D3D10_MAG_FILTER_SHIFT) |
1009              ((mip & D3D10_FILTER_TYPE_MASK) << D3D10_MIP_FILTER_SHIFT));
1010     }
1011 
1012     D3D10_FILTER D3D10_ENCODE_ANISOTROPIC_FILTER(bool bComparison) {
1013         return cast (D3D10_FILTER)
1014             (D3D10_ANISOTROPIC_FILTERING_BIT |
1015              D3D10_ENCODE_BASIC_FILTER(D3D10_FILTER_TYPE_LINEAR,
1016                                        D3D10_FILTER_TYPE_LINEAR,
1017                                        D3D10_FILTER_TYPE_LINEAR,
1018                                        bComparison));
1019     }
1020 
1021     D3D10_FILTER_TYPE D3D10_DECODE_MIN_FILTER(D3D10_FILTER d3d10Filter) {
1022         return cast(D3D10_FILTER_TYPE)
1023             ((d3d10Filter >> D3D10_MIN_FILTER_SHIFT) & D3D10_FILTER_TYPE_MASK);
1024     }
1025 
1026     D3D10_FILTER_TYPE D3D10_DECODE_MAG_FILTER(D3D10_FILTER d3d10Filter) {
1027         return cast(D3D10_FILTER_TYPE)
1028             ((d3d10Filter >> D3D10_MAG_FILTER_SHIFT) & D3D10_FILTER_TYPE_MASK);
1029     }
1030 
1031     D3D10_FILTER_TYPE D3D10_DECODE_MIP_FILTER(D3D10_FILTER d3d10Filter) {
1032         return cast(D3D10_FILTER_TYPE)
1033             ((d3d10Filter >> D3D10_MIP_FILTER_SHIFT) & D3D10_FILTER_TYPE_MASK);
1034     }
1035 
1036     bool D3D10_DECODE_IS_COMPARISON_FILTER(D3D10_FILTER d3d10Filter) {
1037         return (d3d10Filter & D3D10_COMPARISON_FILTERING_BIT) != 0;
1038     }
1039 
1040     bool D3D10_DECODE_IS_ANISOTROPIC_FILTER(D3D10_FILTER d3d10Filter) {
1041         return ((d3d10Filter & D3D10_ANISOTROPIC_FILTERING_BIT) &&
1042                 (D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MIN_FILTER(d3d10Filter)) &&
1043                 (D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MAG_FILTER(d3d10Filter)) &&
1044                 (D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MIP_FILTER(d3d10Filter)));
1045     }
1046 
1047     bool D3D10_DECODE_IS_TEXT_1BIT_FILTER(D3D10_FILTER d3d10Filter) {
1048         return d3d10Filter == D3D10_TEXT_1BIT_BIT;
1049     }
1050 }
1051 
1052 alias DWORD D3D10_TEXTURE_ADDRESS_MODE;
1053 enum : D3D10_TEXTURE_ADDRESS_MODE
1054 {
1055     D3D10_TEXTURE_ADDRESS_WRAP  = 1,
1056     D3D10_TEXTURE_ADDRESS_MIRROR    = 2,
1057     D3D10_TEXTURE_ADDRESS_CLAMP     = 3,
1058     D3D10_TEXTURE_ADDRESS_BORDER    = 4,
1059     D3D10_TEXTURE_ADDRESS_MIRROR_ONCE       = 5
1060 }
1061 
1062 struct D3D10_SAMPLER_DESC
1063 {
1064     D3D10_FILTER Filter;
1065     D3D10_TEXTURE_ADDRESS_MODE AddressU;
1066     D3D10_TEXTURE_ADDRESS_MODE AddressV;
1067     D3D10_TEXTURE_ADDRESS_MODE AddressW;
1068     FLOAT MipLODBias;
1069     UINT MaxAnisotropy;
1070     D3D10_COMPARISON_FUNC ComparisonFunc;
1071     FLOAT[4] BorderColor;
1072     FLOAT MinLOD;
1073     FLOAT MaxLOD;
1074 }
1075 
1076 mixin(uuid!(ID3D10SamplerState, "9B7E4C0C-342C-4106-A19F-4F2704F689F0"));
1077 extern (C++) interface ID3D10SamplerState : ID3D10DeviceChild {
1078     void GetDesc(D3D10_SAMPLER_DESC* pDesc);
1079 }
1080 
1081 enum D3D10_FORMAT_SUPPORT
1082 {
1083     D3D10_FORMAT_SUPPORT_BUFFER = 0x1,
1084     D3D10_FORMAT_SUPPORT_IA_VERTEX_BUFFER       = 0x2,
1085     D3D10_FORMAT_SUPPORT_IA_INDEX_BUFFER        = 0x4,
1086     D3D10_FORMAT_SUPPORT_SO_BUFFER      = 0x8,
1087     D3D10_FORMAT_SUPPORT_TEXTURE1D      = 0x10,
1088     D3D10_FORMAT_SUPPORT_TEXTURE2D      = 0x20,
1089     D3D10_FORMAT_SUPPORT_TEXTURE3D      = 0x40,
1090     D3D10_FORMAT_SUPPORT_TEXTURECUBE    = 0x80,
1091     D3D10_FORMAT_SUPPORT_SHADER_LOAD    = 0x100,
1092     D3D10_FORMAT_SUPPORT_SHADER_SAMPLE  = 0x200,
1093     D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON       = 0x400,
1094     D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT        = 0x800,
1095     D3D10_FORMAT_SUPPORT_MIP    = 0x1000,
1096     D3D10_FORMAT_SUPPORT_MIP_AUTOGEN    = 0x2000,
1097     D3D10_FORMAT_SUPPORT_RENDER_TARGET  = 0x4000,
1098     D3D10_FORMAT_SUPPORT_BLENDABLE      = 0x8000,
1099     D3D10_FORMAT_SUPPORT_DEPTH_STENCIL  = 0x10000,
1100     D3D10_FORMAT_SUPPORT_CPU_LOCKABLE   = 0x20000,
1101     D3D10_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE    = 0x40000,
1102     D3D10_FORMAT_SUPPORT_DISPLAY        = 0x80000,
1103     D3D10_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT = 0x100000,
1104     D3D10_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET       = 0x200000,
1105     D3D10_FORMAT_SUPPORT_MULTISAMPLE_LOAD       = 0x400000,
1106     D3D10_FORMAT_SUPPORT_SHADER_GATHER  = 0x800000,
1107     D3D10_FORMAT_SUPPORT_BACK_BUFFER_CAST       = 0x1000000
1108 }
1109 
1110 mixin(uuid!(ID3D10Asynchronous, "9B7E4C0D-342C-4106-A19F-4F2704F689F0"));
1111 extern (C++) interface ID3D10Asynchronous : ID3D10DeviceChild {
1112     void Begin();
1113     void End();
1114     HRESULT GetData(
1115         void* pData,
1116         UINT DataSize,
1117         UINT GetDataFlags);
1118     UINT GetDataSize();
1119 }
1120 
1121 enum D3D10_ASYNC_GETDATA_FLAG
1122 {
1123     D3D10_ASYNC_GETDATA_DONOTFLUSH      = 0x1
1124 }
1125 
1126 enum D3D10_QUERY
1127 {
1128     D3D10_QUERY_EVENT   = 0,
1129     D3D10_QUERY_OCCLUSION       = ( D3D10_QUERY_EVENT + 1 ) ,
1130     D3D10_QUERY_TIMESTAMP       = ( D3D10_QUERY_OCCLUSION + 1 ) ,
1131     D3D10_QUERY_TIMESTAMP_DISJOINT      = ( D3D10_QUERY_TIMESTAMP + 1 ) ,
1132     D3D10_QUERY_PIPELINE_STATISTICS     = ( D3D10_QUERY_TIMESTAMP_DISJOINT + 1 ) ,
1133     D3D10_QUERY_OCCLUSION_PREDICATE     = ( D3D10_QUERY_PIPELINE_STATISTICS + 1 ) ,
1134     D3D10_QUERY_SO_STATISTICS   = ( D3D10_QUERY_OCCLUSION_PREDICATE + 1 ) ,
1135     D3D10_QUERY_SO_OVERFLOW_PREDICATE   = ( D3D10_QUERY_SO_STATISTICS + 1 )
1136 }
1137 
1138 alias DWORD D3D10_QUERY_MISC_FLAG;
1139 enum : D3D10_QUERY_MISC_FLAG
1140 {
1141     D3D10_QUERY_MISC_PREDICATEHINT      = 0x1
1142 }
1143 
1144 struct D3D10_QUERY_DESC
1145 {
1146     D3D10_QUERY Query;
1147     UINT MiscFlags;
1148 }
1149 
1150 mixin(uuid!(ID3D10Query, "9B7E4C0E-342C-4106-A19F-4F2704F689F0"));
1151 extern (C++) interface ID3D10Query : ID3D10Asynchronous {
1152     void GetDesc(D3D10_QUERY_DESC* pDesc);
1153 }
1154 
1155 mixin(uuid!(ID3D10Predicate, "9B7E4C10-342C-4106-A19F-4F2704F689F0"));
1156 extern (C++) interface ID3D10Predicate : ID3D10Query {}
1157 
1158 struct D3D10_QUERY_DATA_TIMESTAMP_DISJOINT
1159 {
1160     UINT64 Frequency;
1161     BOOL Disjoint;
1162 }
1163 
1164 struct D3D10_QUERY_DATA_PIPELINE_STATISTICS
1165 {
1166     UINT64 IAVertices;
1167     UINT64 IAPrimitives;
1168     UINT64 VSInvocations;
1169     UINT64 GSInvocations;
1170     UINT64 GSPrimitives;
1171     UINT64 CInvocations;
1172     UINT64 CPrimitives;
1173     UINT64 PSInvocations;
1174 }
1175 
1176 struct D3D10_QUERY_DATA_SO_STATISTICS
1177 {
1178     UINT64 NumPrimitivesWritten;
1179     UINT64 PrimitivesStorageNeeded;
1180 }
1181 
1182 alias DWORD D3D10_COUNTER;
1183 enum : D3D10_COUNTER
1184 {
1185     D3D10_COUNTER_GPU_IDLE      = 0,
1186     D3D10_COUNTER_VERTEX_PROCESSING = ( D3D10_COUNTER_GPU_IDLE + 1 ) ,
1187     D3D10_COUNTER_GEOMETRY_PROCESSING       = ( D3D10_COUNTER_VERTEX_PROCESSING + 1 ) ,
1188     D3D10_COUNTER_PIXEL_PROCESSING  = ( D3D10_COUNTER_GEOMETRY_PROCESSING + 1 ) ,
1189     D3D10_COUNTER_OTHER_GPU_PROCESSING      = ( D3D10_COUNTER_PIXEL_PROCESSING + 1 ) ,
1190     D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION        = ( D3D10_COUNTER_OTHER_GPU_PROCESSING + 1 ) ,
1191     D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION        = ( D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION + 1 ) ,
1192     D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION     = ( D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION + 1 ) ,
1193     D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION     = ( D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION + 1 ) ,
1194     D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION   = ( D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION + 1 ) ,
1195     D3D10_COUNTER_VS_MEMORY_LIMITED = ( D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION + 1 ) ,
1196     D3D10_COUNTER_VS_COMPUTATION_LIMITED    = ( D3D10_COUNTER_VS_MEMORY_LIMITED + 1 ) ,
1197     D3D10_COUNTER_GS_MEMORY_LIMITED = ( D3D10_COUNTER_VS_COMPUTATION_LIMITED + 1 ) ,
1198     D3D10_COUNTER_GS_COMPUTATION_LIMITED    = ( D3D10_COUNTER_GS_MEMORY_LIMITED + 1 ) ,
1199     D3D10_COUNTER_PS_MEMORY_LIMITED = ( D3D10_COUNTER_GS_COMPUTATION_LIMITED + 1 ) ,
1200     D3D10_COUNTER_PS_COMPUTATION_LIMITED    = ( D3D10_COUNTER_PS_MEMORY_LIMITED + 1 ) ,
1201     D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE     = ( D3D10_COUNTER_PS_COMPUTATION_LIMITED + 1 ) ,
1202     D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE    = ( D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE + 1 ) ,
1203     D3D10_COUNTER_DEVICE_DEPENDENT_0        = 0x40000000
1204 }
1205 
1206 alias DWORD D3D10_COUNTER_TYPE;
1207 enum : D3D10_COUNTER_TYPE
1208 {
1209     D3D10_COUNTER_TYPE_FLOAT32  = 0,
1210     D3D10_COUNTER_TYPE_UINT16       = ( D3D10_COUNTER_TYPE_FLOAT32 + 1 ) ,
1211     D3D10_COUNTER_TYPE_UINT32       = ( D3D10_COUNTER_TYPE_UINT16 + 1 ) ,
1212     D3D10_COUNTER_TYPE_UINT64       = ( D3D10_COUNTER_TYPE_UINT32 + 1 )
1213 }
1214 
1215 struct D3D10_COUNTER_DESC
1216 {
1217     D3D10_COUNTER Counter;
1218     UINT MiscFlags;
1219 }
1220 
1221 struct D3D10_COUNTER_INFO
1222 {
1223     D3D10_COUNTER LastDeviceDependentCounter;
1224     UINT NumSimultaneousCounters;
1225     UINT8 NumDetectableParallelUnits;
1226 }
1227 
1228 mixin(uuid!(ID3D10Counter, "9B7E4C11-342C-4106-A19F-4F2704F689F0"));
1229 extern (C++) interface ID3D10Counter : ID3D10Asynchronous {
1230     void GetDesc(D3D10_COUNTER_DESC* pDesc);
1231 }
1232 
1233 mixin(uuid!(ID3D10Device, "9B7E4C0F-342C-4106-A19F-4F2704F689F0"));
1234 extern (C++) interface ID3D10Device : IUnknown {
1235     void VSSetConstantBuffers(
1236         UINT StartSlot,
1237         UINT NumBuffers,
1238         const(ID3D10Buffer)* ppConstantBuffers);
1239 
1240     void PSSetShaderResources(
1241         UINT StartSlot,
1242         UINT NumViews,
1243         const(ID3D10ShaderResourceView)* ppShaderResourceViews);
1244 
1245     void PSSetShader(ID3D10PixelShader pPixelShader);
1246 
1247     void PSSetSamplers(
1248         UINT StartSlot,
1249         UINT NumSamplers,
1250         const(ID3D10SamplerState)* ppSamplers);
1251 
1252     void VSSetShader(ID3D10VertexShader* pVertexShader);
1253 
1254     void DrawIndexed(
1255         UINT IndexCount,
1256         UINT StartIndexLocation,
1257         INT BaseVertexLocation);
1258 
1259     void Draw(
1260         UINT VertexCount,
1261         UINT StartVertexLocation);
1262 
1263     void PSSetConstantBuffers(
1264         UINT StartSlot,
1265         UINT NumBuffers,
1266         const(ID3D10Buffer)* ppConstantBuffers);
1267 
1268     void IASetInputLayout(ID3D10InputLayout* pInputLayout);
1269 
1270     void IASetVertexBuffers(
1271         UINT StartSlot,
1272         UINT NumBuffers,
1273         const(ID3D10Buffer)* ppVertexBuffers,
1274         const(UINT)* pStrides,
1275         const(UINT)* pOffsets);
1276 
1277     void IASetIndexBuffer(
1278         ID3D10Buffer pIndexBuffer,
1279         DXGI_FORMAT Format,
1280         UINT Offset);
1281 
1282     void DrawIndexedInstanced(
1283         UINT IndexCountPerInstance,
1284         UINT InstanceCount,
1285         UINT StartIndexLocation,
1286         INT BaseVertexLocation,
1287         UINT StartInstanceLocation);
1288 
1289     void DrawInstanced(
1290         UINT VertexCountPerInstance,
1291         UINT InstanceCount,
1292         UINT StartVertexLocation,
1293         UINT StartInstanceLocation);
1294 
1295     void GSSetConstantBuffers(
1296         UINT StartSlot,
1297         UINT NumBuffers,
1298         const(ID3D10Buffer)* ppConstantBuffers);
1299 
1300     void GSSetShader(ID3D10GeometryShader pShader);
1301 
1302     void IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY Topology);
1303 
1304     void VSSetShaderResources(
1305         UINT StartSlot,
1306         UINT NumViews,
1307         const(ID3D10ShaderResourceView)* ppShaderResourceViews);
1308 
1309     void VSSetSamplers(
1310         UINT StartSlot,
1311         UINT NumSamplers,
1312         const(ID3D10SamplerState)* ppSamplers);
1313 
1314     void SetPredication(
1315         ID3D10Predicate pPredicate,
1316         BOOL PredicateValue);
1317 
1318     void GSSetShaderResources(
1319         UINT StartSlot,
1320         UINT NumViews,
1321         const(ID3D10ShaderResourceView)* ppShaderResourceViews);
1322 
1323     void GSSetSamplers(
1324         UINT StartSlot,
1325         UINT NumSamplers,
1326         const(ID3D10SamplerState)* ppSamplers);
1327 
1328     void OMSetRenderTargets(
1329         UINT NumViews,
1330         const(ID3D10RenderTargetView)* ppRenderTargetViews,
1331         ID3D10DepthStencilView* pDepthStencilView);
1332 
1333     void OMSetBlendState(
1334         ID3D10BlendState* pBlendState,
1335         const(FLOAT)[4] BlendFactor,
1336         UINT SampleMask);
1337 
1338     void OMSetDepthStencilState(
1339         ID3D10DepthStencilState *pDepthStencilState,
1340         UINT StencilRef);
1341 
1342     void SOSetTargets(
1343         UINT NumBuffers,
1344         const(ID3D10Buffer)* ppSOTargets,
1345         const(UINT)* pOffsets);
1346 
1347     void DrawAuto();
1348 
1349     void RSSetState(ID3D10RasterizerState pRasterizerState);
1350 
1351     void RSSetViewports(
1352         UINT NumViewports,
1353         const(D3D10_VIEWPORT)* pViewports);
1354 
1355     void RSSetScissorRects(
1356         UINT NumRects,
1357         const(D3D10_RECT)* pRects);
1358 
1359     void CopySubresourceRegion(
1360         ID3D10Resource pDstResource,
1361         UINT DstSubresource,
1362         UINT DstX,
1363         UINT DstY,
1364         UINT DstZ,
1365         ID3D10Resource pSrcResource,
1366         UINT SrcSubresource,
1367         const(D3D10_BOX)* pSrcBox);
1368 
1369     void CopyResource(
1370         ID3D10Resource pDstResource,
1371         ID3D10Resource pSrcResource);
1372 
1373     void UpdateSubresource(
1374         ID3D10Resource pDstResource,
1375         UINT DstSubresource,
1376         const(D3D10_BOX)* pDstBox,
1377         const(void)* pSrcData,
1378         UINT SrcRowPitch,
1379         UINT SrcDepthPitch);
1380 
1381     void ClearRenderTargetView(
1382         ID3D10RenderTargetView pRenderTargetView,
1383         const(FLOAT)[4] ColorRGBA);
1384 
1385     void ClearDepthStencilView(
1386         ID3D10DepthStencilView pDepthStencilView,
1387         UINT ClearFlags,
1388         FLOAT Depth,
1389         UINT8 Stencil);
1390 
1391     void GenerateMips(
1392         ID3D10ShaderResourceView pShaderResourceView);
1393 
1394     void ResolveSubresource(
1395         ID3D10Resource pDstResource,
1396         UINT DstSubresource,
1397         ID3D10Resource pSrcResource,
1398         UINT SrcSubresource,
1399         DXGI_FORMAT Format);
1400 
1401     void VSGetConstantBuffers(
1402         UINT StartSlot,
1403         UINT NumBuffers,
1404         ID3D10Buffer* ppConstantBuffers);
1405 
1406     void PSGetShaderResources(
1407         UINT StartSlot,
1408         UINT NumViews,
1409         ID3D10ShaderResourceView* ppShaderResourceViews);
1410 
1411     void PSGetShader(
1412         ID3D10PixelShader* ppPixelShader);
1413 
1414     void PSGetSamplers(
1415         UINT StartSlot,
1416         UINT NumSamplers,
1417         ID3D10SamplerState* ppSamplers);
1418 
1419     void VSGetShader(
1420         ID3D10VertexShader* ppVertexShader);
1421 
1422     void PSGetConstantBuffers(
1423         UINT StartSlot,
1424         UINT NumBuffers,
1425         ID3D10Buffer* ppConstantBuffers);
1426 
1427     void IAGetInputLayout(
1428         ID3D10InputLayout* ppInputLayout);
1429 
1430     void IAGetVertexBuffers(
1431         UINT StartSlot,
1432         UINT NumBuffers,
1433         ID3D10Buffer* ppVertexBuffers,
1434         UINT* pStrides,
1435         UINT* pOffsets);
1436 
1437     void IAGetIndexBuffer(
1438         ID3D10Buffer* pIndexBuffer,
1439         DXGI_FORMAT* Format,
1440         UINT* Offset);
1441 
1442     void GSGetConstantBuffers(
1443         UINT StartSlot,
1444         UINT NumBuffers,
1445         ID3D10Buffer* ppConstantBuffers);
1446 
1447     void GSGetShader(
1448         ID3D10GeometryShader* ppGeometryShader);
1449 
1450     void IAGetPrimitiveTopology(
1451         D3D10_PRIMITIVE_TOPOLOGY* pTopology);
1452 
1453     void VSGetShaderResources(
1454         UINT StartSlot,
1455         UINT NumViews,
1456         ID3D10ShaderResourceView* ppShaderResourceViews);
1457 
1458     void VSGetSamplers(
1459         UINT StartSlot,
1460         UINT NumSamplers,
1461         ID3D10SamplerState* ppSamplers);
1462 
1463     void GetPredication(
1464         ID3D10Predicate* ppPredicate,
1465         BOOL* pPredicateValue);
1466 
1467     void GSGetShaderResources(
1468         UINT StartSlot,
1469         UINT NumViews,
1470         ID3D10ShaderResourceView* ppShaderResourceViews);
1471 
1472     void GSGetSamplers(
1473         UINT StartSlot,
1474         UINT NumSamplers,
1475         ID3D10SamplerState* ppSamplers);
1476 
1477     void OMGetRenderTargets(
1478         UINT NumViews,
1479         ID3D10RenderTargetView* ppRenderTargetViews,
1480         ID3D10DepthStencilView* ppDepthStencilView);
1481 
1482     void OMGetBlendState(
1483         ID3D10BlendState* ppBlendState,
1484         FLOAT[4] BlendFactor,
1485         UINT* pSampleMask);
1486 
1487     void OMGetDepthStencilState(
1488           ID3D10DepthStencilState* ppDepthStencilState,
1489           UINT* pStencilRef);
1490 
1491     void SOGetTargets(
1492         UINT NumBuffers,
1493         ID3D10Buffer* ppSOTargets,
1494         UINT* pOffsets);
1495 
1496     void RSGetState(
1497         ID3D10RasterizerState* ppRasterizerState);
1498 
1499     void RSGetViewports(
1500         UINT* NumViewports,
1501         D3D10_VIEWPORT* pViewports);
1502 
1503     void RSGetScissorRects(
1504         UINT* NumRects,
1505         D3D10_RECT* pRects);
1506 
1507     HRESULT GetDeviceRemovedReason();
1508 
1509     HRESULT SetExceptionMode(
1510         UINT RaiseFlags);
1511 
1512     UINT GetExceptionMode();
1513 
1514     HRESULT GetPrivateData(
1515         REFGUID guid,
1516         UINT* pDataSize,
1517         void* pData);
1518 
1519     HRESULT SetPrivateData(
1520         REFGUID guid,
1521         UINT DataSize,
1522         const(void)* pData);
1523 
1524     HRESULT SetPrivateDataInterface(
1525         REFGUID guid,
1526         const IUnknown pData);
1527 
1528     void ClearState();
1529 
1530     void Flush();
1531 
1532     HRESULT CreateBuffer(
1533         const(D3D10_BUFFER_DESC)* pDesc,
1534         const(D3D10_SUBRESOURCE_DATA)* pInitialData,
1535         ID3D10Buffer* ppBuffer);
1536 
1537     HRESULT CreateTexture1D(
1538         const(D3D10_TEXTURE1D_DESC)* pDesc,
1539         const(D3D10_SUBRESOURCE_DATA)* pInitialData,
1540         ID3D10Texture1D* ppTexture1D);
1541 
1542     HRESULT CreateTexture2D(
1543         const(D3D10_TEXTURE2D_DESC)* pDesc,
1544         const(D3D10_SUBRESOURCE_DATA)* pInitialData,
1545         ID3D10Texture2D* ppTexture2D);
1546 
1547     HRESULT CreateTexture3D(
1548         const(D3D10_TEXTURE3D_DESC)* pDesc,
1549         const(D3D10_SUBRESOURCE_DATA)* pInitialData,
1550         ID3D10Texture3D* ppTexture3D);
1551 
1552     HRESULT CreateShaderResourceView(
1553         ID3D10Resource pResource,
1554         const(D3D10_SHADER_RESOURCE_VIEW_DESC)* pDesc,
1555         ID3D10ShaderResourceView* ppSRView);
1556 
1557     HRESULT CreateRenderTargetView(
1558         ID3D10Resource pResource,
1559         const(D3D10_RENDER_TARGET_VIEW_DESC)* pDesc,
1560         ID3D10RenderTargetView* ppRTView);
1561 
1562     HRESULT CreateDepthStencilView(
1563         ID3D10Resource pResource,
1564         const(D3D10_DEPTH_STENCIL_VIEW_DESC)* pDesc,
1565         ID3D10DepthStencilView* ppDepthStencilView);
1566 
1567     HRESULT CreateInputLayout(
1568         const(D3D10_INPUT_ELEMENT_DESC)* pInputElementDescs,
1569         UINT NumElements,
1570         const(void)* pShaderBytecodeWithInputSignature,
1571         SIZE_T BytecodeLength,
1572         ID3D10InputLayout* ppInputLayout);
1573 
1574     HRESULT CreateVertexShader(
1575         const(void)* pShaderBytecode,
1576         SIZE_T BytecodeLength,
1577         ID3D10VertexShader* ppVertexShader);
1578 
1579     HRESULT CreateGeometryShader(
1580         const(void)* pShaderBytecode,
1581         SIZE_T BytecodeLength,
1582         ID3D10GeometryShader* ppGeometryShader);
1583 
1584     HRESULT CreateGeometryShaderWithStreamOutput(
1585         const(void)* pShaderBytecode,
1586         SIZE_T BytecodeLength,
1587         const(D3D10_SO_DECLARATION_ENTRY)* pSODeclaration,
1588         UINT NumEntries,
1589         UINT OutputStreamStride,
1590         ID3D10GeometryShader* ppGeometryShader);
1591 
1592     HRESULT CreatePixelShader(
1593         const(void)* pShaderBytecode,
1594         SIZE_T BytecodeLength,
1595         ID3D10PixelShader* ppPixelShader);
1596 
1597     HRESULT CreateBlendState(
1598         const(D3D10_BLEND_DESC)* pBlendStateDesc,
1599         ID3D10BlendState* ppBlendState);
1600 
1601     HRESULT CreateDepthStencilState(
1602         const(D3D10_DEPTH_STENCIL_DESC)* pDepthStencilDesc,
1603         ID3D10DepthStencilState* ppDepthStencilState);
1604 
1605     HRESULT CreateRasterizerState(
1606         const(D3D10_RASTERIZER_DESC)* pRasterizerDesc,
1607         ID3D10RasterizerState* ppRasterizerState);
1608 
1609     HRESULT CreateSamplerState(
1610         const(D3D10_SAMPLER_DESC)* pSamplerDesc,
1611         ID3D10SamplerState* ppSamplerState);
1612 
1613     HRESULT CreateQuery(
1614         const(D3D10_QUERY_DESC)* pQueryDesc,
1615         ID3D10Query* ppQuery);
1616 
1617     HRESULT CreatePredicate(
1618         const(D3D10_QUERY_DESC)* pPredicateDesc,
1619         ID3D10Predicate* ppPredicate);
1620 
1621     HRESULT CreateCounter(
1622         const(D3D10_COUNTER_DESC)* pCounterDesc,
1623         ID3D10Counter* ppCounter);
1624 
1625     HRESULT CheckFormatSupport(
1626         DXGI_FORMAT Format,
1627         UINT* pFormatSupport);
1628 
1629     HRESULT CheckMultisampleQualityLevels(
1630         DXGI_FORMAT Format,
1631         UINT SampleCount,
1632         UINT* pNumQualityLevels);
1633 
1634     void CheckCounterInfo(
1635         D3D10_COUNTER_INFO* pCounterInfo);
1636 
1637     HRESULT CheckCounter(
1638         const(D3D10_COUNTER_DESC)* pDesc,
1639         D3D10_COUNTER_TYPE* pType,
1640         UINT* pActiveCounters,
1641         LPSTR szName,
1642         UINT* pNameLength,
1643         LPSTR szUnits,
1644         UINT* pUnitsLength,
1645         LPSTR szDescription,
1646         UINT* pDescriptionLength);
1647 
1648     UINT GetCreationFlags();
1649 
1650     HRESULT OpenSharedResource(
1651         HANDLE hResource,
1652         REFIID ReturnedInterface,
1653         void** ppResource);
1654 
1655     void SetTextFilterSize(
1656         UINT Width,
1657         UINT Height);
1658 
1659     void GetTextFilterSize(
1660         UINT* pWidth,
1661         UINT* pHeight);
1662 
1663 }
1664 
1665 mixin(uuid!(ID3D10Multithread, "9B7E4E00-342C-4106-A19F-4F2704F689F0"));
1666 extern (C++) interface ID3D10Multithread : IUnknown {
1667     void Enter();
1668     void Leave();
1669     BOOL SetMultithreadProtected(BOOL bMTProtect);
1670     BOOL GetMultithreadProtected();
1671 }
1672 
1673 alias DWORD D3D10_CREATE_DEVICE_FLAG;
1674 enum : D3D10_CREATE_DEVICE_FLAG
1675 {
1676     D3D10_CREATE_DEVICE_SINGLETHREADED  = 0x1,
1677     D3D10_CREATE_DEVICE_DEBUG   = 0x2,
1678     D3D10_CREATE_DEVICE_SWITCH_TO_REF   = 0x4,
1679     D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS        = 0x8,
1680     D3D10_CREATE_DEVICE_ALLOW_NULL_FROM_MAP     = 0x10,
1681     D3D10_CREATE_DEVICE_BGRA_SUPPORT    = 0x20,
1682     D3D10_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY   = 0x80,
1683     D3D10_CREATE_DEVICE_STRICT_VALIDATION       = 0x200,
1684     D3D10_CREATE_DEVICE_DEBUGGABLE      = 0x400
1685 }
1686 
1687 enum D3D10_SDK_VERSION = ( 29 );